#include "consumidor.h"
#include <QDebug>

Consumidor::Consumidor(Buffer * buffer)
{
        this->buffer=buffer;
}
void Consumidor::le(){
        int dado=0;
        ((ThreadModificada *) this->currentThread())->mudaEstado(ThreadModificada::Estado(BLOQUEADOSINCRONISMO));
        this->buffer->semaforoUsados->acquire();
                ((ThreadModificada *) this->currentThread())->mudaEstado(ThreadModificada::Estado(BLOQUEADOEXCLUSAO));
                this->buffer->mutex->lock();
                        ((ThreadModificada *) this->currentThread())->mudaEstado(ThreadModificada::Estado(PRONTO));
                        dado = this->buffer->le();
                        if(dado==-1){
                         this->buffer->mutex->unlock();
                         this->terminate();
                        }
                        int a;
                        for(int i=0;i<100000;i++){
                            for(int j=0;j<10000;j++){
                            a=a*i;
                            }
                        }
                        qDebug()<<a;
												this->buffer->setSaidaDoLabelSemaforos("Semaforo Usados = "+QString::number(buffer->semaforoUsados->available())+"  Semaforo Livres = "+QString::number(buffer->semaforoLivres->available())+"\n");
												this->buffer->setSaidaDoLabelSemaforos("Semaforo Usados = "+QString::number(buffer->semaforoUsados->available())+"  Semaforo Livres = "+QString::number(buffer->semaforoLivres->available()+1)+"\n");
												this->buffer->setSaidaDoLabelSemaforos(" li "+QString::number(dado)+"\n");
                        this->buffer->showStatus();

                this->buffer->mutex->unlock();
        this->buffer->semaforoLivres->release();
        //this->buffer->semaforoLivres->available()
}
void Consumidor::run(){
        while(1){
            ((ThreadModificada *) this->currentThread())->mudaEstado(ThreadModificada::Estado(PRONTO));
            le();
            ((ThreadModificada *) this->currentThread())->mudaEstado(ThreadModificada::Estado(SUSPENSO));
       }
}
